#include <unistd.h>

#include <iostream>
#include <vector>

#include "Thread.hpp"
using namespace std;

// 线程执行的函数
void run() {
  while (1) {
    cout << "thread running" << endl;
    sleep(1);  // 每秒打印一次
  }
}

int main() {
  // 创建一个存储Thread对象的vector
  vector<Thread> threads;

  // 创建5个Thread对象，每个对象都使用run函数作为回调
  for (int i = 0; i < 5; ++i) {
    threads.push_back(Thread(run));
  }

  // 启动所有线程
  for (auto& th : threads) {
    th.Run();
  }

  // 等待所有线程结束
  // 注意：由于run函数中是无限循环，这些线程实际上不会结束
  for (auto& th : threads) {
    th.Join();
  }

  return 0;
}

// ----------------------------------

// void run() {
//   while (1) {
//     cout << "thread running" << endl;
//     sleep(1);
//   }
// }

// int main() {
//   //   Thread t(run);
//   //   t.Run();
//   //   cout << "The thread name : " << t.getName() << endl;
//   //   cout << "Start timestamp : " << t.getStartTimeStamp() << endl;
//   //   cout << "The running state : " << t.isRunning() << endl;
//   //   t.Join();

//   vector<Thread> threads;
//   for (int i = 0; i < 5; ++i) {
//     threads.push_back(Thread(run));
//   }

//   for (auto& th : threads) {
//     th.Run();
//   }

//   for (auto& th : threads) {
//     th.Join();
//   }

//   return 0;
// }